home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b2.d64 / auntie < prev    next >
Text File  |  2007-02-28  |  4KB  |  211 lines

  1. 0010 //* AUNT LOUISE'S PROGRAM *//
  2. 0020 //* WRITTEN BY ELISABETH OLDHAM *//
  3. 0030 //* IN COOPERATION WITH LOUISE OLSEN *//
  4. 0040 //* THIS VERSION: 9. JAN. 1981 *//
  5. 0050 //*
  6. 0060 //DECLARATION OF STRINGS//
  7. 0070 DIM NAME$ OF 30, TYPE$ OF 3, SIGN$ OF 1
  8. 0080 DIM SPACES$ OF 39
  9. 0100 //*
  10. 0110 //SET UP SOME CONSTANTS//
  11. 0140 MAXNO:=10; BASE:=20
  12. 0150 THISNAME:=1; THISTYPE:=2; THISLEVEL:=3
  13. 0160 SPACES$(1:39):=""
  14. 0170 //*
  15. 0180 //MAINLINES//
  16. 0190 PRINT CHR$(147) //CLEAR SCREEN
  17. 0200 TAKEIN(THISNAME)
  18. 0210 REGISTER
  19. 0220 TAKEIN(THISTYPE)
  20. 0230 TAKEIN(THISLEVEL)
  21. 0240 EXERCISES
  22. 0250 RECORD
  23. 0260 //*
  24. 0270 PROC EXERCISES 
  25. 0280 FOR EXERCISENO:=1 TO MAXNO DO
  26. 0290 WORKSHOP
  27. 0300 WRITEEXERCISE
  28. 0310 GETANSWER
  29. 0320 ENDFOR EXERCISENO
  30. 0330 ENDPROC EXERCISES
  31. 0340 //
  32. 0350 PROC RECORD 
  33. 0360 //
  34. 0370 //STUD//
  35. 0380 //
  36. 0390 ENDPROC RECORD
  37. 0400 //
  38. 0410 PROC TAKEIN(MATTER) 
  39. 0420 ENTRY
  40. 0430 WHILE NOT OK DO
  41. 0440 ERROR
  42. 0450 ENTRY
  43. 0460 ENDWHILE 
  44. 0470 ENDPROC TAKEIN
  45. 0480 //
  46. 0490 PROC ENTRY 
  47. 0500 WINDOW(8,12)
  48. 0510 CASE MATTER OF
  49. 0520 WHEN 1
  50. 0530 PRINT "WHAT IS YOUR NAME",
  51. 0540 INPUT NAME$
  52. 0550 WHEN 2
  53. 0560 PRINT "ENTER TYPE (ADD, SUB, MUL, DIV)",
  54. 0570 INPUT TYPE$
  55. 0580 WHEN 3
  56. 0590 PRINT "ENTER LEVEL (1, 2, 3)",
  57. 0600 INPUT LEVEL
  58. 0610 ENDCASE 
  59. 0620 PRINT CHR$(147) //CLEAR SCREEN
  60. 0630 CONTROL
  61. 0640 ENDPROC ENTRY
  62. 0650 //
  63. 0660 PROC CONTROL 
  64. 0670 CASE MATTER OF
  65. 0680 WHEN 1
  66. 0690 OK:=(" " IN NAME$)
  67. 0700 WHEN 2
  68. 0710 OK:=(TYPE$="ADD" OR TYPE$="SUB")
  69. 0720 LACKS:=(TYPE$="MUL" OR TYPE$="DIV")
  70. 0730 WHEN 3
  71. 0740 OK:=(LEVEL=1 OR LEVEL=2 OR LEVEL=3)
  72. 0750 ENDCASE 
  73. 0760 ENDPROC CONTROL
  74. 0770 //
  75. 0780 PROC ERROR 
  76. 0790 WINDOW(1,2)
  77. 0800 CASE MATTER OF
  78. 0810 WHEN 1
  79. 0820 PRINT "MOST PEOPLE HAVE BOTH A FIRST NAME"
  80. 0830 PRINT "AND A SURNAME. PLEASE GIVE BOTH!"
  81. 0840 WHEN 2
  82. 0850 PRINT "NO SUCH TYPE OF EXERCISE!"
  83. 0860 IF LACKS THEN
  84. 0870 PRINT "MUL AND DIV ARE NOT YET INSERTED"
  85. 0880 PRINT "PLEASE PICK OUT ADD OR SUB"
  86. 0890 ENDIF 
  87. 0900 WHEN 3
  88. 0910 PRINT "NO SUCH LEVEL OF EXERCISES!"
  89. 0920 ENDCASE 
  90. 0930 ENDPROC ERROR
  91. 0940 //
  92. 0950 PROC REGISTER 
  93. 0960 //
  94. 0970 //STUD//
  95. 0980 //
  96. 0990 ENDPROC REGISTER
  97. 1000 //
  98. 1010 PROC WORKSHOP 
  99. 1020 CASE TYPE$ OF
  100. 1030 WHEN "ADD"
  101. 1040 ADDITION
  102. 1050 WHEN "SUB"
  103. 1060 SUBTRACTION
  104. 1070 WHEN "MUL"
  105. 1080 MULTIPLICATION
  106. 1090 WHEN "DIV"
  107. 1100 DIVISION
  108. 1110 ENDCASE 
  109. 1120 ENDPROC WORKSHOP
  110. 1130 //
  111. 1140 PROC ADDITION 
  112. 1150 CASE LEVEL OF
  113. 1160 WHEN 1
  114. 1170 N1:=RND(0,5); N2:=RND(0,5)
  115. 1180 WHEN 2
  116. 1190 N1:=RND(0,9); N2:=RND(0,9)
  117. 1200 WHEN 3
  118. 1210 N1:=RND(40,50); N2:=RND(1,10)
  119. 1220 ENDCASE 
  120. 1230 RESULT:=N1+N2
  121. 1240 SIGN$:="+"
  122. 1250 ENDPROC ADDITION
  123. 1260 //
  124. 1270 PROC SUBTRACTION 
  125. 1280 CASE LEVEL OF
  126. 1290 WHEN 1
  127. 1300 N1:=RND(5,9); N2:=RND(1,5)
  128. 1310 WHEN 2
  129. 1320 N1:=RND(10,19); N2:=RND(1,10)
  130. 1330 WHEN 3
  131. 1340 N1:=RND(50,89); N2:=RND(10,19)
  132. 1350 ENDCASE 
  133. 1360 RESULT:=N1-N2
  134. 1370 SIGN$:="-"
  135. 1380 ENDPROC SUBTRACTION
  136. 1390 //
  137. 1400 PROC MULTIPLICATION 
  138. 1410 //
  139. 1420 //STUD//
  140. 1430 //
  141. 1440 ENDPROC MULTIPLICATION
  142. 1450 //
  143. 1460 PROC DIVISION 
  144. 1470 //
  145. 1480 //STUD//
  146. 1490 //
  147. 1500 ENDPROC DIVISION
  148. 1510 //
  149. 1520 PROC GETANSWER 
  150. 1530 TRY:=1
  151. 1540 ENTERANSWER
  152. 1550 WHILE NOT OK DO
  153. 1560 HELP
  154. 1570 WRITEEXERCISE
  155. 1580 ENTERANSWER
  156. 1590 TRY:+1
  157. 1600 ENDWHILE 
  158. 1610 ENDPROC GETANSWER
  159. 1620 //
  160. 1630 PROC ENTERANSWER 
  161. 1640 TABULATOR(RESULT)
  162. 1650 INPUT "": ANSWER
  163. 1660 OK:=(ANSWER=RESULT)
  164. 1670 PRINT CHR$(147) //CLEAR SCREEN
  165. 1680 ENDPROC ENTERANSWER
  166. 1690 //
  167. 1700 PROC WRITEEXERCISE 
  168. 1710 WINDOW(7,15)
  169. 1720 CASE TYPE$ OF
  170. 1730 WHEN "ADD","SUB"
  171. 1740 TABULATOR(N1)
  172. 1750 PRINT N1
  173. 1760 PRINT TAB(BASE-3),SIGN$,
  174. 1770 TABULATOR(N2)
  175. 1780 PRINT N2
  176. 1790 PRINT TAB(BASE-3),"====="
  177. 1800 WHEN "MUL","DIV"
  178. 1810 //
  179. 1820 //STUD//
  180. 1830 //
  181. 1840 ENDCASE 
  182. 1850 ENDPROC WRITEEXERCISE
  183. 1860 //
  184. 1870 PROC HELP 
  185. 1880 WINDOW(1,2)
  186. 1890 IF TRY<3 THEN
  187. 1900 PRINT "NO, TRY AGAIN"
  188. 1910 ELSE 
  189. 1920 PRINT "NO, THE CORRECT ANSWER IS ",RESULT
  190. 1930 PRINT "TYPE THAT."
  191. 1940 ENDIF 
  192. 1950 ENDPROC HELP
  193. 1960 //
  194. 1970 PROC TABULATOR(T) 
  195. 1980 POSITION:=BASE-(T>=10)-(T>=100)
  196. 1990 PRINT TAB(POSITION),
  197. 2000 ENDPROC TABULATOR
  198. 2010 //
  199. 2020 PROC WINDOW(FIRST,LAST) 
  200. 2030 SCREEN(FIRST,1)
  201. 2040 FOR I:=1 TO LAST-FIRST+1 DO PRINT SPACES$
  202. 2050 SCREEN(FIRST,1)
  203. 2060 ENDPROC WINDOW
  204. 2070 //
  205. 2080 PROC SCREEN(ROW,COL) CLOSED
  206. 2090 PRINT CHR$(19) //CURSOR HOME
  207. 2100 FOR I:=1 TO ROW DO PRINT  //CURSOR DOWN
  208. 2105 FOR I:=1 TO COL-1 DO PRINT CHR$(29), //CURSOR RIGHT
  209. 2110 ENDPROC SCREEN
  210. 2120 //
  211.